from epm.models.database import db_session, init_db, shutdown_session, engine
from sqlalchemy.types import Date, DateTime
import datetime

from epm.models.usuario import Usuario
from epm.models.proyecto import Proyecto
from epm.models.fase import Fase
from epm.models.estadoFase import EstadoFase
from epm.models.estadoProyecto import EstadoProyecto
from epm.models.estadoLB import EstadoLB
from epm.models.lineaBase import LineaBase
from epm.models.estadoSC import EstadoSC
from epm.models.comite import Comite
from epm.models.permiso import Permiso
from epm.models.rol import Rol
from epm.models.atributoTipo import AtributoTipo
from epm.models.tipoItem import TipoItem
from epm.models.tipoCampo import TipoCampo
from epm.models.item import Item
from epm.models.relacion import Relacion
from epm.models.tipoRelacion import TipoRelacion
from epm.models.estadoItem import EstadoItem
from epm.models.atributoItem import AtributoItem
from epm.models.lineaBase import LineaBase
import hashlib
from epm.models.relacionManager import RelacionManager
from epm.models.relacion import relacion, Relacion
from epm.models.solicitudCambio import solicitud, SolicitudCambio
from epm.models.votosComite import votosComite, VotosComite
from epm.models.adjunto import adjunto, Adjunto


"""
Encargado de crear la conexion con la base de datos
"""

init_db()
session = db_session()


""" Tablas cargadas estaticamente """

# Permisos de Administrador
p1 = Permiso(codigo="10000", descripcion="gestionar usuarios")
p2 = Permiso(codigo="20000", descripcion="gestionar proyectos")
permiso1 = Permiso(codigo="00001", descripcion="crear usuario")
permiso2 = Permiso(codigo="00002", descripcion="eliminar usuario")
permiso3 = Permiso(codigo="00003", descripcion="modificar usuario")
permiso4 = Permiso(codigo="00004", descripcion="consultar usuario")
permiso5 = Permiso(codigo="00005", descripcion="crear proyecto")
permiso6 = Permiso(codigo="00006", descripcion="eliminar proyecto")
permiso7 = Permiso(codigo="00007", descripcion="modificar proyecto")
permiso8 = Permiso(codigo="00008", descripcion="consultar proyecto")

#Permisos de Lider de Proyecto
p3 = Permiso(codigo="30000", descripcion="gestionar roles")
p4 = Permiso(codigo="40000", descripcion="gestionar usuarios del proyecto")
p5 = Permiso(codigo="50000", descripcion="gestionar comite")
p6 = Permiso(codigo="60000", descripcion="consultas administracion")
p7 = Permiso(codigo="70000", descripcion="gestionar fases")
p8 = Permiso(codigo="80000", descripcion="gestionar tipos de item")
p9 = Permiso(codigo="90000", descripcion="gestionar linea base")
p10 = Permiso(codigo="11000", descripcion="gestionar solicitud de cambio")
p15 = Permiso(codigo="16000", descripcion="consultas gestion de cambios")
permiso9 = Permiso(codigo="00009", descripcion="crear rol")
permiso10 = Permiso(codigo="00010", descripcion="asignar permisos a rol")
permiso11 = Permiso(codigo="00011", descripcion="modificar rol")
permiso12 = Permiso(codigo="00012", descripcion="eliminar rol")
permiso13 = Permiso(codigo="00013", descripcion="desasignar permisos de rol")
permiso14 = Permiso(codigo="00014", descripcion="consultar rol")
permiso15 = Permiso(codigo="00015", descripcion="asignar rol a usuario")
permiso16 = Permiso(codigo="00016", descripcion="desasignar rol de usuario")
permiso17 = Permiso(codigo="00017", descripcion="agregar integrante a comite")
permiso18 = Permiso(codigo="00018", descripcion="modificar integrante de comite")
permiso19 = Permiso(codigo="00019", descripcion="inicializar fase")
permiso20 = Permiso(codigo="00020", descripcion="modificar fase")
permiso21 = Permiso(codigo="00021", descripcion="abrir fase")
permiso22 = Permiso(codigo="00022", descripcion="cerrar fase")
permiso23 = Permiso(codigo="00023", descripcion="consultar fase")
permiso24 = Permiso(codigo="00024", descripcion="inicializar proyecto")
permiso25 = Permiso(codigo="00025", descripcion="finalizar proyecto")

#Permisos Generales
p16 = Permiso(codigo="17000", descripcion="gestionar items")
p17 = Permiso(codigo="18000", descripcion="generar solicitud de cambio")
permiso26 = Permiso(codigo="00026", descripcion="crear tipo de item")
permiso27 = Permiso(codigo="00027", descripcion="modificar tipo de item")
permiso28 = Permiso(codigo="00028", descripcion="eliminar tipo de item")
permiso29 = Permiso(codigo="00029", descripcion="importar tipo de item")
permiso30 = Permiso(codigo="00030", descripcion="consultar tipo de item")
permiso31 = Permiso(codigo="00031", descripcion="crear linea base")
permiso32 = Permiso(codigo="00032", descripcion="aprobar linea base")
permiso33 = Permiso(codigo="00033", descripcion="romper linea base")
permiso34 = Permiso(codigo="00034", descripcion="consultar linea base")
permiso35 = Permiso(codigo="00035", descripcion="asignar item a linea base")
permiso36 = Permiso(codigo="00036", descripcion="desasignar item de linea base")
permiso37 = Permiso(codigo="00037", descripcion="crear item")
permiso38 = Permiso(codigo="00038", descripcion="modificar item")
permiso39 = Permiso(codigo="00039", descripcion="eliminar item")
permiso40 = Permiso(codigo="00040", descripcion="consultar item")
permiso41 = Permiso(codigo="00041", descripcion="aprobar item")
permiso42 = Permiso(codigo="00042", descripcion="generar solicitud de cambio")
permiso43 = Permiso(codigo="00043", descripcion="votar solicitud de cambio")
permiso44 = Permiso(codigo="00044", descripcion="restaurar item")
permiso45 = Permiso(codigo="00045", descripcion="atributos item")
permiso46 = Permiso(codigo="00046", descripcion="revivir item")
permiso47 = Permiso(codigo="00047", descripcion="agregar atributos tipo")
permiso48 = Permiso(codigo="00048", descripcion="eliminar atributos tipo")
permiso49 = Permiso(codigo="00049", descripcion="modificar linea base")
permiso50 = Permiso(codigo="00050", descripcion="asignar usuario a proyecto")
permiso51 = Permiso(codigo="00051", descripcion="desasignar usuario de proyecto")
permiso52 = Permiso(codigo="00052", descripcion="calcular costo")
permiso53 = Permiso(codigo="00053", descripcion="calcular complejidad")
permiso54 = Permiso(codigo="00054", descripcion="adjuntar item")
permiso55 = Permiso(codigo="00055", descripcion="modificar item por solicitud")

session.add(p1)
session.add(p2)
session.add(p3)
session.add(p4)
session.add(p5)
session.add(p6)
session.add(p7)
session.add(p8)
session.add(p9)
session.add(p10)
session.add(p15)
session.add(p16)
session.add(p17)
session.add(permiso1)
session.add(permiso2)
session.add(permiso3)
session.add(permiso4)
session.add(permiso5)
session.add(permiso6)
session.add(permiso7)
session.add(permiso8)
session.add(permiso9)
session.add(permiso10)
session.add(permiso11)
session.add(permiso12)
session.add(permiso13)
session.add(permiso14)
session.add(permiso15)
session.add(permiso16)
session.add(permiso17)
session.add(permiso18)
session.add(permiso19)
session.add(permiso20)
session.add(permiso21)
session.add(permiso22)
session.add(permiso23)
session.add(permiso24)
session.add(permiso25)
session.add(permiso26)
session.add(permiso27)
session.add(permiso28)
session.add(permiso29)
session.add(permiso30)
session.add(permiso31)
session.add(permiso32)
session.add(permiso33)
session.add(permiso34)
session.add(permiso35)
session.add(permiso36)
session.add(permiso37)
session.add(permiso38)
session.add(permiso39)
session.add(permiso40)
session.add(permiso41)
session.add(permiso42)
session.add(permiso43)
session.add(permiso44)
session.add(permiso45)
session.add(permiso46)
session.add(permiso47)
session.add(permiso48)
session.add(permiso49)
session.add(permiso50)
session.add(permiso51)
session.add(permiso52)
session.add(permiso53)
session.add(permiso54)
session.add(permiso55)


# Tipos de campos permitidos para los atributos
tipoCampo1 = TipoCampo(nombre="numerico", descripcion="Numero real")
tipoCampo2 = TipoCampo(nombre="cadena", descripcion="Cadena de caracteres")
tipoCampo3 = TipoCampo(nombre="fecha", descripcion="atributo con formato fecha")
session.add(tipoCampo1)
session.add(tipoCampo2)
session.add(tipoCampo3)

# Tipos de relaciones permitidas entre los items
tipoRelacion1 = TipoRelacion(nombre= "padre-hijo", descripcion="relacion entre items de una misma fase")
tipoRelacion2 = TipoRelacion(nombre= "ancestro-sucesor", descripcion="relacion entre items de distintas fases")
session.add(tipoRelacion1)
session.add(tipoRelacion2)

session.add(tipoRelacion1)
session.add(tipoRelacion2)

# Estados del pyto
estadoproyecto1 = EstadoProyecto (nombre="pendiente", descripcion="Por defecto al crear el proyecto")
estadoproyecto2 = EstadoProyecto (nombre="iniciado", descripcion="Se pueden agregar items al pyto")
estadoproyecto3 = EstadoProyecto (nombre="finalizado", descripcion="El proyecto ha sido terminado")
session.add(estadoproyecto1)
session.add(estadoproyecto2)
session.add(estadoproyecto3)

# Estados de los items
estadoitem1 = EstadoItem (nombre="creado", descripcion="estado inicial")
estadoitem2 = EstadoItem (nombre="aprobado", descripcion="estado aprobado")
estadoitem3 = EstadoItem (nombre="en revision", descripcion="estado en revision")
estadoitem4 = EstadoItem (nombre="en lineabase", descripcion="estado en linea base")
estadoitem5 = EstadoItem (nombre="eliminado", descripcion="estado eliminado")
session.add(estadoitem1)
session.add(estadoitem2)
session.add(estadoitem3)
session.add(estadoitem4)
session.add(estadoitem5)

# Estados de las LB
estadolb1 = EstadoLB (nombre="abierta", descripcion="estado inicial")
estadolb2 = EstadoLB (nombre="aprobada", descripcion="estado aprobado")
estadolb3 = EstadoLB (nombre="en revision", descripcion="estado en revision")
estadolb4 = EstadoLB (nombre="rota", descripcion="estado eliminado")
session.add(estadolb1)
session.add(estadolb2)
session.add(estadolb3)
session.add(estadolb4)

# Estados de las fases
estadofase1 = EstadoFase (nombre="pendiente", descripcion="estado inicial")
estadofase2 = EstadoFase (nombre="abierta", descripcion="estado abierto")
estadofase3 = EstadoFase (nombre="cerrada", descripcion="estado final")
estadofase4 = EstadoFase (nombre="en revision", descripcion="estado en revision")
session.add(estadofase1)
session.add(estadofase2)
session.add(estadofase3)
session.add(estadofase4)

# Estados de las SC
estadosc1 = EstadoSC (nombre="aprobada", descripcion="estado aprobado")
estadosc2 = EstadoSC (nombre="rechazada", descripcion="estado rechazado")
estadosc3 = EstadoSC (nombre="pendiente", descripcion="estado inicial")
session.add(estadosc1)
session.add(estadosc2)
session.add(estadosc3)


""" Tablas cargadas con datos para desarrollo y pruebas """

user = Usuario(nombre="Administrador", apellido="Administrador", cedula="0000000",
             usuario="admin", contrasenha=hashlib.sha1( "admin" ).hexdigest(), correo="admin@admin.com")
user2 = Usuario(nombre="Camilo", apellido="Baez", cedula="4250872",
             usuario="camilo", contrasenha=hashlib.sha1( "123" ).hexdigest(), correo="camilo@admin.com")
user3 = Usuario(nombre="Verena", apellido="Ojeda", cedula="3893208",
             usuario="verena", contrasenha=hashlib.sha1( "123" ).hexdigest(), correo="verena@admin.com")
user4 = Usuario(nombre="Joan", apellido="Ruax", cedula="3552348",
             usuario="juanchi", contrasenha=hashlib.sha1( "123" ).hexdigest(), correo="juanchi@admin.com")
user5 = Usuario(nombre="Permiso", apellido="Permiso", cedula="1234567",
             usuario="permiso", contrasenha=hashlib.sha1( "permiso" ).hexdigest(), correo="permiso@admin.com")
user6 = Usuario(nombre="Root", apellido="Root", cedula="0000010",
             usuario="root", contrasenha=hashlib.sha1( "root" ).hexdigest(), correo="root@root.com")


# Proyecto 1
proy1 = Proyecto (nombre="test1", cant_fases="3", cant_comite="3", presupuesto="100")
proy1.estadoproyecto = estadoproyecto2
proy1.lider = user3

session.add(proy1)

fase1p1 = Fase (nombre="fase1", numero="1", descripcion="Analisis", cant_items="0",cant_lineabase="0")
fase1p1.proyecto = proy1
fase1p1.estadofase = estadofase3

fase2p1 = Fase (nombre="fase2", numero="2", descripcion="Desarrollo", cant_items="0",cant_lineabase="0")
fase2p1.proyecto = proy1
fase2p1.estadofase = estadofase2

fase3p1 = Fase (nombre="fase3", numero="3", descripcion="Pruebas", cant_items="0",cant_lineabase="0")
fase3p1.proyecto = proy1
fase3p1.estadofase = estadofase2

session.add(fase1p1)
session.add(fase2p1)
session.add(fase3p1)

# Roles
rol = Rol (nombre="administrador", descripcion="permisos de administrador del sistema")
rol.permisos = [p1, p2, permiso1, permiso2, permiso3, permiso4, permiso5, permiso6, permiso7, permiso8]


rol1 = Rol (nombre="superusuario", descripcion="acceso a todo el sistema")
rol1.permisos = [p3, p4, p5, p6, p7, p8, p9, p10, p15, p16, p17,
                 permiso1, permiso2, permiso3, permiso4, permiso5, permiso6, permiso7, permiso8, permiso9, permiso10,
                 permiso11, permiso12, permiso13, permiso14, permiso15, permiso16, permiso17, permiso18, permiso19, permiso20,
                 permiso21, permiso22, permiso23, permiso24, permiso25, permiso26, permiso27, permiso28, permiso29, permiso30,
                 permiso31, permiso32, permiso33, permiso34, permiso35, permiso36, permiso37, permiso38, permiso39, permiso40,
                 permiso41, permiso42, permiso43, permiso44, permiso45, permiso46, permiso47, permiso48, permiso49, permiso50,
                 permiso51, permiso52, permiso53, permiso54, permiso55]

rol2 = Rol (nombre="Lider_test1", descripcion="permisos del lider test 1")
rol2.permisos = [p3 ,p4 ,p5 ,p6 ,p7 ,p10 ,p15 , permiso9, permiso10, permiso11, permiso12, permiso13, permiso14, 
                 permiso15, permiso16, permiso17, permiso18, permiso19, permiso20,
                 permiso21, permiso22, permiso23, permiso24, permiso25, permiso50, permiso51, permiso52, permiso53]

rol3 = Rol (nombre="Lider_test2", descripcion="permisos del lider test 2")
rol3.permisos = [p3 ,p4 ,p5 ,p6 ,p7 ,p10 ,p15 , permiso9, permiso10, permiso11, permiso12, permiso13, permiso14, 
                 permiso15, permiso16, permiso17, permiso18, permiso19, permiso20,
                 permiso21, permiso22, permiso23, permiso24, permiso25, permiso50, permiso51, permiso52, permiso53]

rolf1 = Rol (nombre="desf1", descripcion="desarrollador fase 1")
rolf1.fase = fase1p1
rolf1.permisos = [p9, p10, p15, p16, p17,
                 permiso1, permiso2, permiso3, permiso4, permiso5, permiso6, permiso7, permiso8, permiso9, permiso10,
                 permiso11, permiso12, permiso13, permiso14, permiso15, permiso16, permiso17, permiso18, permiso19, permiso20,
                 permiso21, permiso22, permiso23, permiso24, permiso25, permiso26, permiso27, permiso28, permiso29, permiso30,
                 permiso31, permiso32, permiso33, permiso34, permiso35, permiso36, permiso37, permiso38, permiso39, permiso40,
                 permiso41, permiso42, permiso43, permiso44, permiso45, permiso46, permiso47, permiso48, permiso49, permiso50,
                 permiso51, permiso52, permiso53, permiso54, permiso55]

rolf2 = Rol (nombre="desf2", descripcion="desarrollador fase 2")
rolf2.fase = fase2p1
rolf2.permisos = [p9, p10, p15, p16, p17,
                 permiso1, permiso2, permiso3, permiso4, permiso5, permiso6, permiso7, permiso8, permiso9, permiso10,
                 permiso11, permiso12, permiso13, permiso14, permiso15, permiso16, permiso17, permiso18, permiso19, permiso20,
                 permiso21, permiso22, permiso23, permiso24, permiso25, permiso26, permiso27, permiso28, permiso29, permiso30,
                 permiso31, permiso32, permiso33, permiso34, permiso35, permiso36, permiso37, permiso38, permiso39, permiso40,
                 permiso41, permiso42, permiso43, permiso44, permiso45, permiso46, permiso47, permiso48, permiso49, permiso50,
                 permiso51, permiso52, permiso53, permiso54, permiso55]

rolf3 = Rol (nombre="desf3", descripcion="desarrollador fase 3")
rolf3.fase = fase3p1
rolf3.permisos = [p9, p10, p15, p16, p17,
                 permiso1, permiso2, permiso3, permiso4, permiso5, permiso6, permiso7, permiso8, permiso9, permiso10,
                 permiso11, permiso12, permiso13, permiso14, permiso15, permiso16, permiso17, permiso18, permiso19, permiso20,
                 permiso21, permiso22, permiso23, permiso24, permiso25, permiso26, permiso27, permiso28, permiso29, permiso30,
                 permiso31, permiso32, permiso33, permiso34, permiso35, permiso36, permiso37, permiso38, permiso39, permiso40,
                 permiso41, permiso42, permiso43, permiso44, permiso45, permiso46, permiso47, permiso48, permiso49, permiso50,
                 permiso51, permiso52, permiso53, permiso54, permiso55]

rolLider = Rol (nombre="Lider", descripcion="permisos de lider")
rolLider.permisos = [p3 ,p4 ,p5 ,p6 ,p7 ,p10 ,p15 , permiso9, permiso10, permiso11, permiso12, permiso13, permiso14, 
                 permiso15, permiso16, permiso17, permiso18, permiso19, permiso20,
                 permiso21, permiso22, permiso23, permiso24, permiso25, permiso50, permiso51, permiso52, permiso53]

session.add(rol)
session.add(rol1)
session.add(rol2)
session.add(rol3)
session.add(rolf1)
session.add(rolf2)
session.add(rolf3)
session.add(rolLider)

user.roles = [rol]
user2.roles = [rol3, rolf1, rolf2, rolf3]
user3.roles = [rol2, rolf1, rolf2, rolf3]
user4.roles = [rolf1, rolf2]
user6.roles = [rol1]
session.add(user)
session.add(user2)
session.add(user3)
session.add(user4)
session.add(user6)

tipoItem1 = TipoItem(codigo= "RF", nombre="RequerimientoFuncional", descripcion="Requerimiento Funcional")
atributoTipo1 = AtributoTipo(campo="Nombre requerimiento", tamanho='100')
atributoTipo1.tipocampo = tipoCampo1
atributoTipo2 = AtributoTipo(campo="Descripcion requerimiento",tamanho='1000')
atributoTipo2.tipocampo = tipoCampo1
tipoItem1.atributos = [atributoTipo1, atributoTipo2]
tipoItem1.fase = fase1p1

tipoItem2 = TipoItem(codigo= "RNF", nombre="RequerimientoNoFuncional", descripcion="Requerimiento No Funcional")
tipoItem2.atributos = [atributoTipo1, atributoTipo2]
tipoItem2.fase = fase1p1

tipoItem3 = TipoItem(codigo= "AP", nombre="ActividadPrincipal", descripcion="Actividad Principal")
atributoTipo3 = AtributoTipo(campo="Nombre", tamanho='100')
atributoTipo3.tipocampo = tipoCampo1
atributoTipo4 = AtributoTipo(campo="Duracion", tamanho='10')
atributoTipo4.tipocampo = tipoCampo2
tipoItem3.atributos = [atributoTipo3, atributoTipo4]
tipoItem3.fase = fase2p1

tipoItem4 = TipoItem(codigo= "AS", nombre="ActividadSecundaria", descripcion="Actividad Secundaria")
tipoItem4.atributos = [atributoTipo3, atributoTipo4]
tipoItem4.fase = fase2p1

tipoItem5 = TipoItem(codigo= "PF", nombre="PruebaFinal", descripcion="Prueba Final")
atributoTipo5 = AtributoTipo(campo="Responsable", tamanho='100')
atributoTipo5.tipocampo = tipoCampo1
atributoTipo6 = AtributoTipo(campo="Fecha")
atributoTipo6.tipocampo = tipoCampo3
tipoItem5.atributos = [atributoTipo5, atributoTipo6]
tipoItem5.fase = fase3p1

session.add(atributoTipo1)
session.add(atributoTipo2)
session.add(atributoTipo3)
session.add(atributoTipo4)
session.add(atributoTipo5)
session.add(atributoTipo6)
session.add(tipoItem1)
session.add(tipoItem2)
session.add(tipoItem3)
session.add(tipoItem4)
session.add(tipoItem5)

# Comite del proyecto
comite1 = Comite(nombre="Comite", descripcion="comite proyecto 1", cant_comite=proy1.cant_comite)
comite1.proyecto = proy1
comite1.usuarios =[proy1.lider, user2, user4]

session.add(comite1)

# Items del proyecto, relaciones y lineas base
item1 = Item(nombre='item1', costo='123456', complejidad="5", fechaInicio="2013-01-01", 
             fechaFin="2013-01-30", duracion="10", version="1", numeroItem="RF-1", 
             fechaUltimaMod="2013-01-01", usuarioUltimaMod=user2)
item1.estadoItem = estadoitem4
item1.tipoItem = tipoItem1
item1.creador = user2

item2 = Item(nombre='item2', costo='123456', complejidad="2", fechaInicio="2013-01-01", 
             fechaFin="2013-01-30", duracion="12", version="1", numeroItem="RF-2",
             fechaUltimaMod="2013-01-01", usuarioUltimaMod=user2)
item2.estadoItem = estadoitem4
item2.tipoItem = tipoItem1
item2.creador = user3

item3 = Item(nombre='item3', costo='123456', complejidad="6", fechaInicio="2013-01-01", 
             fechaFin="2013-01-30", duracion="13", version="1", numeroItem="RNF-1", 
             fechaUltimaMod="2013-01-01", usuarioUltimaMod=user3)
item3.estadoItem = estadoitem4
item3.tipoItem = tipoItem2
item3.creador = user4

item4 = Item(nombre='item4', costo='123456', complejidad="2", fechaInicio="2013-01-01", 
             fechaFin="2013-01-30", duracion="13", version="1", numeroItem="AP-1", 
             fechaUltimaMod="2013-01-01", usuarioUltimaMod=user3)
item4.estadoItem = estadoitem4
item4.tipoItem = tipoItem3
item4.creador = user4

item5 = Item(nombre='item5', costo='123456', complejidad="7", fechaInicio="2013-01-01", 
             fechaFin="2013-01-30", duracion="13", version="1", numeroItem="AP-2", 
             fechaUltimaMod="2013-01-01", usuarioUltimaMod=user3)
item5.estadoItem = estadoitem4
item5.tipoItem = tipoItem3
item5.creador = user4

item6 = Item(nombre='item6', costo='123456', complejidad="10", fechaInicio="2013-01-01", 
             fechaFin="2013-01-30", duracion="13", version="1", numeroItem="AS-1", 
             fechaUltimaMod="2013-01-01", usuarioUltimaMod=user3)
item6.estadoItem = estadoitem2
item6.tipoItem = tipoItem4
item6.creador = user4

item7 = Item(nombre='item7', costo='123456', complejidad="3", fechaInicio="2013-01-01", 
             fechaFin="2013-01-30", duracion="13", version="1", numeroItem="PF-1", 
             fechaUltimaMod="2013-01-01", usuarioUltimaMod=user3)
item7.estadoItem = estadoitem2
item7.tipoItem = tipoItem5
item7.creador = user4

session.add(item1)
session.add(item2)
session.add(item3)
session.add(item4)
session.add(item5)
session.add(item6)
session.add(item7)

item1.fase=fase1p1
item2.fase=fase1p1
item3.fase=fase1p1
item4.fase=fase2p1
item5.fase=fase2p1
item6.fase=fase2p1
item7.fase=fase3p1

rel1 = Relacion(item1, item2, tipoRelacion1)
rel2 = Relacion(item4, item5, tipoRelacion1)
rel3 = Relacion(item2, item6, tipoRelacion2)
rel4 = Relacion(item3, item6, tipoRelacion2)
rel5 = Relacion(item4, item7, tipoRelacion2)
rel6 = Relacion(item5, item7, tipoRelacion2)
rel7 = Relacion(item6, item7, tipoRelacion2)

session.add(rel1)
session.add(rel2)
session.add(rel3)
session.add(rel4)
session.add(rel5)
session.add(rel6)
session.add(rel7)

lineaBase1= LineaBase(observacion='Linea base 1', cant_items="2")
lineaBase1.estadoLB=estadolb2
lineaBase1.items=[item1,item2]
session.add(lineaBase1)
lineaBase2= LineaBase(observacion='Linea base 2', cant_items="1")
lineaBase2.estadoLB=estadolb2
lineaBase2.items=[item3]
session.add(lineaBase2)
lineaBase3= LineaBase(observacion='Linea base 3', cant_items="2")
lineaBase3.estadoLB=estadolb2
lineaBase3.items=[item4,item5]
session.add(lineaBase3)
lineaBase4= LineaBase(observacion='Linea base 4', cant_items="1")
lineaBase4.estadoLB=estadolb1
lineaBase4.items=[item6]
session.add(lineaBase4)

# Proyecto 2
proy2 = Proyecto (nombre="test2", cant_fases="2", cant_comite="1", presupuesto="100")
proy2.estadoproyecto = estadoproyecto2 # proyecto iniciado
proy2.lider = user2

session.add(proy2)

fase1p2 = Fase (nombre="fase1", numero="1", descripcion="Analisis", cant_items="0",cant_lineabase="0")
fase1p2.proyecto = proy2
fase1p2.estadofase = estadofase3 # la primera fase cerrada

fase2p2 = Fase (nombre="fase2", numero="2", descripcion="Desarrollo", cant_items="0",cant_lineabase="0")
fase2p2.proyecto = proy2
fase2p2.estadofase = estadofase2 # las segunda fase abierta


# Proyecto 3: Club de futbol
# Proyecto 4: Clase de cocina

# Commit a la base de datos
session.commit()
session.close()
